#define _CRT_SECURE_NO_WANINGS 1
#pragma warning(disable: 4996)
#include<stdio.h>
#include<math.h>
#include<string.h>
#include<stdlib.h>

//void reverse(char* s)
//{
//    int right = strlen(s) - 1;
//    int left = 0;
//    while (left < right)
//    {
//        char tmp = s[left];
//        s[left] = s[right];
//        s[right] = tmp;
//        left++;
//        right--;
//    }
//}
//char* addBinary(char* a, char* b) {
//    int as = strlen(a);
//    int bs = strlen(b);
//    reverse(a);
//    reverse(b);
//    int max = fmax(as, bs);
//    char* new = (char*)malloc(sizeof(char) * (max + 2));
//    int carry = 0, n = 0;
//    for (int i = 0; i < max; i++)
//    {
//        if (i < as && a[i] == '1')
//        {
//            carry += 1;
//        }
//        if (i < bs && b[i] == '1')
//        {
//            carry += 1;
//        }
//        new[n++] = carry % 2 + '0';
//        carry = carry / 2;
//    }
//    reverse(new);
//    return new;
//}
//
//int mySqrt(int x) {
//    long long i = 1;
//    while (x >= i * i)
//    {
//        i++;
//    }
//    return i - 1;
//}
//
//int climbStairs(int n) {
//    int sp1 = 0, sp2 = 0, r = 1;
//    while (n--)
//    {
//        sp1 = sp2;
//        sp2 = r;
//        r = sp1 + sp2;
//    }
//    return r;
//}
typedef struct ListNode
{
    int val;
    struct ListNode* next;
}ListNode;
struct ListNode* deleteDuplicates(struct ListNode* head) {
    if (head == NULL)
    {
        return NULL;
    }
    if (head->next == NULL)
    {
        return head;
    }
    struct ListNode* cur = head;
    int ip = 0;
    while (cur && cur->next)
    {
        ip = cur->val;
        if (ip == cur->next->val)
        {
            struct ListNode* next = cur->next->next;
            cur->next = next;
        }
        cur = cur->next;
    }
    return head;
}
ListNode* create(int x)
{
    ListNode* newnode = (ListNode*)malloc(sizeof(ListNode));
    newnode->next = NULL;
    newnode->val = x;
    return newnode;
}
int main()
{
    ListNode* node1 = create(1);
    ListNode* node2 = create(1);
    ListNode* node3 = create(2);
    node1->next = node2; node2->next = node3;
    ListNode* head = deleteDuplicates(node1);
    return 0;
}